#ifndef case4_h
#define case4_h

int baseMVA = 100;

int nBus = 4;

int nGen = 2;

int nBranch = 4;

typedef struct 
{
    int bus_i;     // bus number,节点编号
    int type;      // bus type，节点类型，1：PQ，2：PV，3：ref
    double Pd;     // real power demand，有功功率需求
    double Pq;     // reactive power demand，无功功率需求
    double Gs;     // shunt conductance，支路电导
    double Bs;     // shunt susceptance，支路电纳
    int area;      // area number，区域编号*
    double Vm;     // voltage magnitude，电压幅值
    double Va;     // voltage angle，电压相角，单位：度
    double baseKV; // base voltage，基准电压*
    int zone;      // loss zone，损耗区域*
    double vMax;   // maximum voltage magnitude，最大电压幅值*
    double vMin;   // minimum voltage magnitude，最小电压幅值*
} BusData;

typedef struct 
{
    int bus_i;     // bus number， 接入发电机的母线编号
    double Pg;     // real power output，有功功率输出
    double Qg;     // reactive power output，无功功率输出
    double Qmax;   // maximum reactive power output，最大无功功率输出*
    double Qmin;   // minimum reactive power output，最小无功功率输出*
    double Vg;     // voltage magnitude setpoint，电压幅值设定值
    double mBase;  // total MVA base，基准功率*
    double status; // machine status，机组状态*
    double Pmax;   // maximum real power output，最大有功功率输出*
    double Pmin;   // minimum real power output，最小有功功率输出*
    double Pc1;    // lower real power output of PQ capability curve，PQ曲线下限*
    double Pc2;    // upper real power output of PQ capability curve，PQ曲线上限*
    double Qc1min; // minimum reactive power output at Pc1，PQ曲线下限*
    double Qc1max; // maximum reactive power output at Pc1，PQ曲线上限*
    double Qc2min; // minimum reactive power output at Pc2，PQ曲线下限*
    double Qc2max; // maximum reactive power output at Pc2，PQ曲线上限*
    double ramp_agc; // ramp rate for load following/AGC，AGC斜率*
    double ramp_10;  // ramp rate for 10 minute reserves，10分钟备用斜率*
    double ramp_30;  // ramp rate for 30 minute reserves，30分钟备用斜率*
    double ramp_q;   // ramp rate for reactive power，无功功率斜率*
    int apf;         // area participation factor，区域参与因子*
} GenData;

typedef struct 
{
    int fbus;     // f, from bus number，起始节点编号
    int tbus;     // t, to bus number，终止节点编号
    double r;     // resistance，电阻
    double x;     // reactance，电抗
    double b;     // total line charging susceptance，线路电纳
    double rateA; // MVA rating A，设置该支路长期、短期和紧急允许功率
    double rateB; // MVA rating B，额定功率
    double rateC; // MVA rating C，额定功率
    double ratio; // transformer off nominal turns ratio，变压器变比k，设置该支路的变比。如果支路是导线，则为0；如果支路是变压器，则为fbus侧母线基准电压与tbus侧母线的基准电压之比设置该支路的变比。如果支路是导线，则为0；如果支路是变压器，则为fbus侧母线基准电压与tbus侧母线的基准电压之比
    double angle; // transformer phase shift angle，设置支路的相位角度。如果支路为导线，则为0；如果支路为变压器（或移相器），就是变压器（或移相器）的转角
    double status; // initial branch status，支路状态
    double angmin; // minimum angle difference，最小相角差
    double angmax; // maximum angle difference，最大相角差
} BranchData;

void printData();

#endif

